package com.mymarkdown.app.util;

import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.mymarkdown.app.fx.FxApplication;
import com.mymarkdown.app.websocket.enums.MessageTypeEnum;
import com.mymarkdown.app.websocket.message.MessagePojo;
import javafx.stage.FileChooser;
import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.util.Objects;
import java.util.function.Consumer;

/**
 * @author zenglun
 * @date 2021/12/7 4:37 下午
 * @description: TODO
 */
@Slf4j
public class FileChooserUtil {
    public static void showSaveDialog(Consumer<File> callBack, String description, String... fileTypes) {
        try {
            FileChooser fileChooser = new FileChooser();
            if (ArrayUtil.isNotEmpty(fileTypes) && StrUtil.isNotBlank(description)) {
                FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter(description, fileTypes);
                fileChooser.getExtensionFilters().add(extFilter);
            }
            fileChooser.setTitle("保存文件");
            File file = fileChooser.showSaveDialog(FxApplication.getPrimaryStage());
            MessagePojo messagePojo = new MessagePojo();
            messagePojo.setMessageType(MessageTypeEnum.TISP_MSG.getMessageType());
            if (Objects.isNull(file)) {
                // 表示未选择任何文件
                return;
            }


            //写入文件
            if (file.exists()) {
                // 表示文件已经存在
                messagePojo.setBody("目标位置已经存在该文件!");
                CurrentUserUtil.getSelf().sendMessage(messagePojo);
                return;
            }
            if (!file.createNewFile()) {
                // 文件创建失败!
                messagePojo.setBody("创建操作文件失败!");
                CurrentUserUtil.getSelf().sendMessage(messagePojo);
                return;
            }
            //
            if (!Objects.isNull(callBack)) {
                callBack.accept(file);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
